static void resize_grip_create_window (GtkWindow *window);
static void resize_grip_destroy_window (GtkWindow *window);
static void update_grip_visibility (GtkWindow *window);
+static void update_window_buttons (GtkWindow *window);
static void gtk_window_notify_keys_changed (GtkWindow *window);
static GtkKeyHash *gtk_window_get_key_hash (GtkWindow *window);
priv->reset_type_hint = TRUE;
priv->gdk_type_hint = hint;
+
+ update_window_buttons (window);
}
/**
0);
}
+ update_window_buttons (window);
+ gtk_widget_queue_resize (GTK_WIDGET (window));
+
g_object_notify (G_OBJECT (window), "decorated");
}
GDK_FUNC_ALL | GDK_FUNC_CLOSE);
}
+ update_window_buttons (window);
+
g_object_notify (G_OBJECT (window), "deletable");
}
return title;
}
+static void
+update_window_buttons (GtkWindow *window)
+{
+ GtkWindowPrivate *priv = window->priv;
+
+ if (priv->client_decorated)
+ {
+ if (priv->title_box != NULL)
+ gtk_widget_show (priv->title_box);
+
+ if (priv->title_min_button != NULL)
+ {
+ if (priv->gdk_type_hint == GDK_WINDOW_TYPE_HINT_NORMAL)
+ gtk_widget_show (priv->title_min_button);
+ else
+ gtk_widget_hide (priv->title_min_button);
+ }
+
+ if (priv->title_max_button != NULL)
+ {
+ if (priv->resizable &&
+ priv->gdk_type_hint == GDK_WINDOW_TYPE_HINT_NORMAL)
+ gtk_widget_show (priv->title_max_button);
+ else
+ gtk_widget_hide (priv->title_max_button);
+ }
+
+ if (priv->title_close_button != NULL)
+ {
+ if (priv->deletable &&
+ priv->gdk_type_hint == GDK_WINDOW_TYPE_HINT_NORMAL)
+ gtk_widget_show_all (priv->title_close_button);
+ else
+ gtk_widget_hide (priv->title_close_button);
+ }
+
+ if (priv->title_label != NULL)
+ gtk_widget_show (priv->title_label);
+ }
+ else
+ {
+ if (priv->title_box != NULL)
+ gtk_widget_hide (priv->title_box);
+ }
+}
+
static void
create_decoration (GtkWidget *widget)
{
G_CALLBACK (gtk_window_title_close_clicked), window);
gtk_widget_show_all (priv->title_box);
+
+ update_window_buttons (window);
}
static void
gtk_widget_set_visible (priv->title_box, !priv->fullscreen);
}
+ if (event->changed_mask & (GDK_WINDOW_STATE_FULLSCREEN | GDK_WINDOW_STATE_MAXIMIZED))
+ {
+ update_window_buttons (window);
+ gtk_widget_queue_draw (GTK_WIDGET (window));
+ }
+
return FALSE;
}
priv->resizable = resizable;
update_grip_visibility (window);
+ update_window_buttons (window);
gtk_widget_queue_resize_no_redraw (GTK_WIDGET (window));